package br.com.diego.system.manager.autenticacao.impl;

import br.com.diego.system.controller.cadastrousuario.SituacaoVo;
import br.com.diego.system.entity.usuario.Usuario;
import br.com.diego.system.manager.AbstractDiegoManager;
import br.com.diego.system.manager.autenticacao.AutenticacaoManager;
import javax.persistence.NoResultException;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.springframework.transaction.annotation.Transactional;

public class JpaAutenticacaoManagerImpl extends AbstractDiegoManager implements AutenticacaoManager {

    @Override
    @Transactional(readOnly = false)
    public Usuario acessar(Usuario usuario) {

        Session session = (Session) entityManager.getDelegate();
        Criteria criteria = session.createCriteria(Usuario.class)
                .add(Restrictions.eq("email", usuario.getEmail()))
                .add(Restrictions.eq("senha", usuario.getSenha()))
                .add(Restrictions.eq("situacao", SituacaoVo.ATIVO));
        try {
            return (Usuario) criteria.uniqueResult();
        } catch (NoResultException e) {
            return null;
        }
    }
}
